package com.itheima.task;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

/*
        * 有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池中的奖项为 {10,5,20,50,100,200,500,800,2,80,300,700};
	        创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”，“抽奖箱2”，随机从抽奖池中获取奖项元素并打印在控制台上,格式如下
        * */
public class Luck implements Runnable {
    private static final int[] arr = {10,5,20,50,100,200,500,800,2,80,300,700};
    private static ArrayList<Integer> arrayList = null ;
    static {
        arrayList = new ArrayList<>();
        for (int i = 0; i <arr.length ; i++) {
            arrayList.add(arr[i]);
        }
    }
    private int poolMax=getmax(arrayList);
    Random random = new Random();
    int sum =0;
    @Override
    public void run() {
        //method1();

        method2();
    }
/*
* 每次抽的过程中，不打印，抽完时一次性打印(随机)
            在此次抽奖过程中，抽奖箱1总共产生了6个奖项，
              分别为：10,20,100,500,2,300最高奖项为300元，总计额为932元
            在此次抽奖过程中，抽奖箱2总共产生了6个奖项，
              分别为：5,50,200,800,80,700最高奖项为800元，总计额为1835元
* */
    private void method2() {
        ArrayList<Integer> array = new ArrayList<>();
        while(true){
            synchronized (Luck.class){
                if(arrayList.isEmpty())break;
                int rs = random.nextInt(arrayList.size());
                int remove = arrayList.remove(rs);
                array.add(remove);
            }
        }
        System.out.println(Thread.currentThread().getName()+"总共产生了"+array.size()+"个奖项，"+
                "分别为："+array+"最高奖项为"+getmax(array)+"元，总计额为"+getSum(array)+"元");
        if(getmax(array)==poolMax){
            System.out.println(Thread.currentThread().getName()+"产生了最大值"+getmax(array));
        }

    }
    public int getSum(ArrayList<Integer> array){
        for (Integer arrayList :array){
                sum += arrayList;
        }
        return sum;
    }
    public int getmax(ArrayList<Integer> array){
        Integer max = Collections.max(array);
        return max ;
    }
/* 1.每次抽出一个奖项就打印一个(随机)
		抽奖箱1 又产生了一个 10 元大奖
		抽奖箱1 又产生了一个 100 元大奖
		抽奖箱1 又产生了一个 200 元大奖
		抽奖箱1 又产生了一个 800 元大奖
		抽奖箱2 又产生了一个 700 元大奖
* */

    private void method1() {
        while(true){
            synchronized (Luck.class){
                if(arrayList.isEmpty())break;
                int rs = random.nextInt(arrayList.size());
                int remove = arrayList.remove(rs);
                System.out.println(Thread.currentThread().getName()+"又产生了一个"+remove+"元大奖");
            }
        }
    }



}
